////////////////////////////////////////////////////////////////////////////////
// Class: KEG::IniFile
//  Load and use INI file.
//
// 
//
// Bodhi Crandall-Rus (boder.us)
// June 1, 2006
////////////////////////////////////////////////////////////////////////////////
#ifndef INIFILE_HPP
#define INIFILE_HPP

#include <map>

#include "common.hpp"

namespace KEG
{

class IniFile
{
public:
    IniFile();
    IniFile( const std::string& );
    void Read( const std::string& );
    void Write( const std::string& = "" );

	bool Good();
	void Clear();
    
	int GetInt( const std::string&, const std::string&, int = 0);
    double GetDouble( const std::string&, const std::string&, double = 0.0);
    std::string GetString( const std::string&, const std::string&, const std::string& = "");
    
	void SetInt( const std::string&, const std::string&, int = 0);
    void SetDouble( const std::string&, const std::string&, double = 0.0 );
    void SetString( const std::string&, const std::string&, const std::string& = "");

private:
    std::string filename;
	bool failbit;
	std::map< std::string, std::map< std::string, std::string >> var;
};

}

#endif
